package com.tonyodev.fetch2.fetch;

/**
 * @since 2021-05-20
 */
public class LiveSettings {
    private boolean didSanitizeDatabaseOnFirstEntry = false;

    private final Object lock = new Object();
    private final String namespace;

    /**
     * 构造器
     *
     * @param namespace 命名空间
     */
    public LiveSettings(final String namespace) {
        this.namespace = namespace;
    }

    /**
     * 获取命名空间
     *
     * @return 命名空间
     */
    public String getNamespace() {
        return namespace;
    }

    /**
     * 命名空间是否第一次创建
     *
     * @return 是否第一次创建状态
     */
    public boolean isDidSanitizeDatabaseOnFirstEntry() {
        return didSanitizeDatabaseOnFirstEntry;
    }

    /**
     * 修改命名空间是否第一次创建
     *
     * @param didSanitizeDatabaseOnFirstEntry 命名空间是否第一次创建
     */
    public void setDidSanitizeDatabaseOnFirstEntry(boolean didSanitizeDatabaseOnFirstEntry) {
        this.didSanitizeDatabaseOnFirstEntry = didSanitizeDatabaseOnFirstEntry;
    }

    /**
     * 执行
     *
     * @param liveSettings LiveSetting 对象
     */
    public void execute(LiveSetting liveSettings) {
        synchronized (lock) {
            liveSettings.setLiveSetting(this);
        }
    }

    /**
     * LiveSetting接口
     */
    public interface LiveSetting {

        /**
         * LiveSetting 接口回调
         *
         * @param liveSettings LiveSetting对象
         */
        void setLiveSetting(LiveSettings liveSettings);
    }
}
